ITP001 Axioms: ITP009^5.ax


%------------------------------------------------------------------------------
% File     : ITP009^5 : TPTP v8.2.0. Bugfixed v7.5.0.
% Domain   : Interactive Theorem Proving
% Axioms   : HOL4 set theory export, chainy mode
% Version  : [BG+19] axioms.
% English  :

% Refs     : [BG+19] Brown et al. (2019), GRUNGE: A Grand Unified ATP Chall
%          : [Gau20] Gauthier (2020), Email to Geoff Sutcliffe
% Source   : [BG+19]
% Names    : num^2.ax [Gau20]
%          : HL4009^5.ax [TPAP]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   43 (  13 unt;  17 typ;   0 def)
%            Number of atoms       :  117 (  16 equ;   0 cnn)
%            Maximal formula atoms :   20 (   2 avg)
%            Number of connectives :  190 (   3   ~;   0   |;   5   &; 172   @)
%                                         (   2 <=>;   8  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   13 (   4 avg; 172 nst)
%            Number of types       :    2 (   1 usr)
%            Number of type conns  :    6 (   6   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   30 (  29 usr;  23 con; 0-2 aty)
%            Number of variables   :   21 (   0   ^  20   !;   1   ?;  21   :)
% SPC      : TH0_SAT_EQU_NAR

% Comments :
% Bugfixes : v7.5.0 - Fixes to the axioms.
%------------------------------------------------------------------------------
thf(tp_ty_2Enum_2Enum,type,
    ty_2Enum_2Enum: del ).

thf(stp_ty_2Enum_2Enum,type,
    tp__ty_2Enum_2Enum: $tType ).

thf(stp_inj_ty_2Enum_2Enum,type,
    inj__ty_2Enum_2Enum: tp__ty_2Enum_2Enum > $i ).

thf(stp_surj_ty_2Enum_2Enum,type,
    surj__ty_2Enum_2Enum: $i > tp__ty_2Enum_2Enum ).

thf(stp_inj_surj_ty_2Enum_2Enum,axiom,
    ! [X: tp__ty_2Enum_2Enum] :
      ( ( surj__ty_2Enum_2Enum @ ( inj__ty_2Enum_2Enum @ X ) )
      = X ) ).

thf(stp_inj_mem_ty_2Enum_2Enum,axiom,
    ! [X: tp__ty_2Enum_2Enum] : ( mem @ ( inj__ty_2Enum_2Enum @ X ) @ ty_2Enum_2Enum ) ).

thf(stp_iso_mem_ty_2Enum_2Enum,axiom,
    ! [X: $i] :
      ( ( mem @ X @ ty_2Enum_2Enum )
     => ( X
        = ( inj__ty_2Enum_2Enum @ ( surj__ty_2Enum_2Enum @ X ) ) ) ) ).

thf(tp_c_2Enum_2E0,type,
    c_2Enum_2E0: $i ).

thf(mem_c_2Enum_2E0,axiom,
    mem @ c_2Enum_2E0 @ ty_2Enum_2Enum ).

thf(stp_fo_c_2Enum_2E0,type,
    fo__c_2Enum_2E0: tp__ty_2Enum_2Enum ).

thf(stp_eq_fo_c_2Enum_2E0,axiom,
    ( ( inj__ty_2Enum_2Enum @ fo__c_2Enum_2E0 )
    = c_2Enum_2E0 ) ).

thf(tp_c_2Enum_2EABS__num,type,
    c_2Enum_2EABS__num: $i ).

thf(mem_c_2Enum_2EABS__num,axiom,
    mem @ c_2Enum_2EABS__num @ ( arr @ ind @ ty_2Enum_2Enum ) ).

thf(stp_fo_c_2Enum_2EABS__num,type,
    fo__c_2Enum_2EABS__num: tp__i > tp__ty_2Enum_2Enum ).

thf(stp_eq_fo_c_2Enum_2EABS__num,axiom,
    ! [X0: tp__i] :
      ( ( inj__ty_2Enum_2Enum @ ( fo__c_2Enum_2EABS__num @ X0 ) )
      = ( ap @ c_2Enum_2EABS__num @ ( inj__i @ X0 ) ) ) ).

thf(tp_c_2Enum_2EIS__NUM__REP,type,
    c_2Enum_2EIS__NUM__REP: $i ).

thf(mem_c_2Enum_2EIS__NUM__REP,axiom,
    mem @ c_2Enum_2EIS__NUM__REP @ ( arr @ ind @ bool ) ).

thf(tp_c_2Enum_2EREP__num,type,
    c_2Enum_2EREP__num: $i ).

thf(mem_c_2Enum_2EREP__num,axiom,
    mem @ c_2Enum_2EREP__num @ ( arr @ ty_2Enum_2Enum @ ind ) ).

thf(stp_fo_c_2Enum_2EREP__num,type,
    fo__c_2Enum_2EREP__num: tp__ty_2Enum_2Enum > tp__i ).

thf(stp_eq_fo_c_2Enum_2EREP__num,axiom,
    ! [X0: tp__ty_2Enum_2Enum] :
      ( ( inj__i @ ( fo__c_2Enum_2EREP__num @ X0 ) )
      = ( ap @ c_2Enum_2EREP__num @ ( inj__ty_2Enum_2Enum @ X0 ) ) ) ).

thf(tp_c_2Enum_2ESUC,type,
    c_2Enum_2ESUC: $i ).

thf(mem_c_2Enum_2ESUC,axiom,
    mem @ c_2Enum_2ESUC @ ( arr @ ty_2Enum_2Enum @ ty_2Enum_2Enum ) ).

thf(stp_fo_c_2Enum_2ESUC,type,
    fo__c_2Enum_2ESUC: tp__ty_2Enum_2Enum > tp__ty_2Enum_2Enum ).

thf(stp_eq_fo_c_2Enum_2ESUC,axiom,
    ! [X0: tp__ty_2Enum_2Enum] :
      ( ( inj__ty_2Enum_2Enum @ ( fo__c_2Enum_2ESUC @ X0 ) )
      = ( ap @ c_2Enum_2ESUC @ ( inj__ty_2Enum_2Enum @ X0 ) ) ) ).

thf(tp_c_2Enum_2ESUC__REP,type,
    c_2Enum_2ESUC__REP: $i ).

thf(mem_c_2Enum_2ESUC__REP,axiom,
    mem @ c_2Enum_2ESUC__REP @ ( arr @ ind @ ind ) ).

thf(stp_fo_c_2Enum_2ESUC__REP,type,
    fo__c_2Enum_2ESUC__REP: tp__i > tp__i ).

thf(stp_eq_fo_c_2Enum_2ESUC__REP,axiom,
    ! [X0: tp__i] :
      ( ( inj__i @ ( fo__c_2Enum_2ESUC__REP @ X0 ) )
      = ( ap @ c_2Enum_2ESUC__REP @ ( inj__i @ X0 ) ) ) ).

thf(tp_c_2Enum_2EZERO__REP,type,
    c_2Enum_2EZERO__REP: $i ).

thf(mem_c_2Enum_2EZERO__REP,axiom,
    mem @ c_2Enum_2EZERO__REP @ ind ).

thf(stp_fo_c_2Enum_2EZERO__REP,type,
    fo__c_2Enum_2EZERO__REP: tp__i ).

thf(stp_eq_fo_c_2Enum_2EZERO__REP,axiom,
    ( ( inj__i @ fo__c_2Enum_2EZERO__REP )
    = c_2Enum_2EZERO__REP ) ).

thf(ax_thm_2Enum_2ESUC__REP__DEF,axiom,
    ( ( p @ ( ap @ ( c_2Ebool_2EONE__ONE @ ind @ ind ) @ c_2Enum_2ESUC__REP ) )
    & ~ ( p @ ( ap @ ( c_2Ebool_2EONTO @ ind @ ind ) @ c_2Enum_2ESUC__REP ) ) ) ).

thf(ax_thm_2Enum_2EZERO__REP__DEF,axiom,
    ! [V0y: tp__i] :
      ( fo__c_2Enum_2EZERO__REP
     != ( surj__i @ ( ap @ c_2Enum_2ESUC__REP @ ( inj__i @ V0y ) ) ) ) ).

thf(ax_thm_2Enum_2EIS__NUM__REP,axiom,
    ! [V0m: tp__i] :
      ( ( p @ ( ap @ c_2Enum_2EIS__NUM__REP @ ( inj__i @ V0m ) ) )
    <=> ! [V1P: $i] :
          ( ( mem @ V1P @ ( arr @ ind @ bool ) )
         => ( ( ( p @ ( ap @ V1P @ ( inj__i @ fo__c_2Enum_2EZERO__REP ) ) )
              & ! [V2n: tp__i] :
                  ( ( p @ ( ap @ V1P @ ( inj__i @ V2n ) ) )
                 => ( p @ ( ap @ V1P @ ( ap @ c_2Enum_2ESUC__REP @ ( inj__i @ V2n ) ) ) ) ) )
           => ( p @ ( ap @ V1P @ ( inj__i @ V0m ) ) ) ) ) ) ).

thf(ax_thm_2Enum_2Enum__TY__DEF,axiom,
    ? [V0rep: $i] :
      ( ( mem @ V0rep @ ( arr @ ty_2Enum_2Enum @ ind ) )
      & ( p @ ( ap @ ( ap @ ( c_2Ebool_2ETYPE__DEFINITION @ ind @ ty_2Enum_2Enum ) @ c_2Enum_2EIS__NUM__REP ) @ V0rep ) ) ) ).

thf(ax_thm_2Enum_2Enum__ISO__DEF,axiom,
    ( ! [V0a: tp__ty_2Enum_2Enum] :
        ( ( surj__ty_2Enum_2Enum @ ( ap @ c_2Enum_2EABS__num @ ( ap @ c_2Enum_2EREP__num @ ( inj__ty_2Enum_2Enum @ V0a ) ) ) )
        = V0a )
    & ! [V1r: tp__i] :
        ( ( p @ ( ap @ c_2Enum_2EIS__NUM__REP @ ( inj__i @ V1r ) ) )
      <=> ( ( surj__i @ ( ap @ c_2Enum_2EREP__num @ ( ap @ c_2Enum_2EABS__num @ ( inj__i @ V1r ) ) ) )
          = V1r ) ) ) ).

thf(ax_thm_2Enum_2EZERO__DEF,axiom,
    ( fo__c_2Enum_2E0
    = ( surj__ty_2Enum_2Enum @ ( ap @ c_2Enum_2EABS__num @ ( inj__i @ fo__c_2Enum_2EZERO__REP ) ) ) ) ).

thf(ax_thm_2Enum_2ESUC__DEF,axiom,
    ! [V0m: tp__ty_2Enum_2Enum] :
      ( ( surj__ty_2Enum_2Enum @ ( ap @ c_2Enum_2ESUC @ ( inj__ty_2Enum_2Enum @ V0m ) ) )
      = ( surj__ty_2Enum_2Enum @ ( ap @ c_2Enum_2EABS__num @ ( ap @ c_2Enum_2ESUC__REP @ ( ap @ c_2Enum_2EREP__num @ ( inj__ty_2Enum_2Enum @ V0m ) ) ) ) ) ) ).

thf(conj_thm_2Enum_2ENOT__SUC,axiom,
    ! [V0n: tp__ty_2Enum_2Enum] :
      ( ( surj__ty_2Enum_2Enum @ ( ap @ c_2Enum_2ESUC @ ( inj__ty_2Enum_2Enum @ V0n ) ) )
     != fo__c_2Enum_2E0 ) ).

thf(conj_thm_2Enum_2EINV__SUC,axiom,
    ! [V0m: tp__ty_2Enum_2Enum,V1n: tp__ty_2Enum_2Enum] :
      ( ( ( surj__ty_2Enum_2Enum @ ( ap @ c_2Enum_2ESUC @ ( inj__ty_2Enum_2Enum @ V0m ) ) )
        = ( surj__ty_2Enum_2Enum @ ( ap @ c_2Enum_2ESUC @ ( inj__ty_2Enum_2Enum @ V1n ) ) ) )
     => ( V0m = V1n ) ) ).

thf(conj_thm_2Enum_2EINDUCTION,axiom,
    ! [V0P: $i] :
      ( ( mem @ V0P @ ( arr @ ty_2Enum_2Enum @ bool ) )
     => ( ( ( p @ ( ap @ V0P @ ( inj__ty_2Enum_2Enum @ fo__c_2Enum_2E0 ) ) )
          & ! [V1n: tp__ty_2Enum_2Enum] :
              ( ( p @ ( ap @ V0P @ ( inj__ty_2Enum_2Enum @ V1n ) ) )
             => ( p @ ( ap @ V0P @ ( ap @ c_2Enum_2ESUC @ ( inj__ty_2Enum_2Enum @ V1n ) ) ) ) ) )
       => ! [V2n: tp__ty_2Enum_2Enum] : ( p @ ( ap @ V0P @ ( inj__ty_2Enum_2Enum @ V2n ) ) ) ) ) ).

%------------------------------------------------------------------------------